﻿using OSS.Domain;
using OSS.Manager;
using OSS.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OSS.Component
{
    public class RoleComponent:BaseComponent<Role, RoleManager>, IRoleService
    {
        /// <summary>
        /// 配置角色对应的权限
        /// </summary>
        /// <param name="roleID">要分配权限的角色ID</param>
        /// <param name="systemfunction">用,隔开的功能模块ID，如1,2,3...</param>
        public void AssignAuthorize(int roleID, string systemfunctions)
        {
            //获取要修改权限的角色
            Role role = manager.Get(roleID);

            //清空以前的角色
            if (role.SystemFunctions == null)
                role.SystemFunctions = new List<SystemFunction>();
            role.SystemFunctions.Clear();

            //实例化功能所对应的数据管理对象
            SystemFunctionManager funManager = new SystemFunctionManager();

            //拆分功能对应的ID值，并给角色赋值新功能
            string[] systemStr = systemfunctions.Split(',');
            if (systemStr != null && systemStr.Length > 0)
            {
                foreach (var fun in systemStr)
                {
                    if (string.IsNullOrEmpty(fun)) continue;
                    role.SystemFunctions.Add(funManager.Get(int.Parse(fun)));
                }
            }

            //更新角色，同时更新角色所对应的功能
            manager.Update(role);

        }
    }
}
